package com.expert.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.expert.dto.EditRoleDTO;
import com.expert.dto.UpdateRoleMenuDTO;
import com.expert.dto.UserLoginDTO;
import com.expert.pojo.Role;
import com.expert.pojo.User;
import com.expert.vo.AssignMenuVo;
import com.expert.vo.CheckCodeVo;
import com.expert.vo.RoleVo;
import com.expert.vo.UserPageVo;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: UserLoginService
 * @Author: cxs
 * @Date: 2024/01/18 19:58
 * @Description:
 **/

public interface RoleService extends IService<Role> {
    /**
     * 获取role的列表
     * @return
     */
    List<Role> getRoleList();

    /**
     * 分页查询角色
     * @param page 当前页
     * @param pageSize 每页个数
     * @param roleName 角色名
     * @return
     */
    Page<RoleVo> getRolePage(int page, int pageSize, String roleName,String roleCode);

    /**
     * 删除角色信息
     * @param ids 待删除角色id
     */
    void deleteRoles(ArrayList<Long> ids);

    /**
     * 检查新增角色信息是否重复
     * @param roleCode 新增角色代号
     */
    void checkRoleRepeat( String roleCode);

    /**
     * 检查新增角色名字是否重复
     * @param roleName
     * @return
     */
    boolean checkRoleNameRepeat(String roleName);

    /**
     * 添加新角色
     * @param role 待添加角色
     */
    void addRole(Role role);

    /**
     * 根据id查询角色信息
     * @param id
     * @return
     */
    Role getRoleById(Long id);

    /**
     * 修改用户信息
     * @param editRoleDTO
     */
    void updateRole(EditRoleDTO editRoleDTO);

    /**
     * 获取菜单信息
     * @return
     */
    List<AssignMenuVo> getAssignMenu();

    /**
     * 获取用户默认菜单列表
     * @param id
     * @return
     */
    List<Long> getRoleDefaultIds(Long id);

    /**
     * 修改角色菜单
     * @param menuDTO
     */
    void updateRoleMenu(UpdateRoleMenuDTO menuDTO);
}
